﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UIT.Controls;
using UIT.Controls.Template;
using UIT.Animations;

namespace UIT
{
    public interface IRenderer
    {
        RendererManager Manager { get; }

        void Initialize(RendererManager manager, object userObject);
    }

    public interface IRenderer<T> 
    {
        void Render(T control);
    }

    public interface IControlRenderer : IRenderer
    {
        void Render(IControl control);
    }

    public interface IControlRenderer<T> : IControlRenderer, IRenderer<T> where T : IControl
    {
    }

    public interface IAnimationRenderer : IRenderer
    {
        void Render(IAnimation animation);
    }

    public interface IAnimationRenderer<T> : IAnimationRenderer, IRenderer<T> where T : IAnimation
    {
    }

    public interface ITemplateRenderer : IRenderer
    {
        void Render(ITemplate control);
    }

    public interface ITemplateRenderer<T> : ITemplateRenderer, IRenderer<T> where T : ITemplate
    {
    }
}
